import java.util.*;


public class Solution6 {
    /**
     * 
     * @param s string字符串 
     * @return string字符串ArrayList
     */
    public ArrayList<String> restoreIpAddresses (String s) {
        // write code here
        ArrayList<String> ret = new ArrayList<String>();
        int n = s.length();
        //第一个点
        for(int i = 1;i<4&&i<n-2;i++) {
            //第二个点
            for(int j = i+1;j<i+4&&j<n-1;j++) {
                //第三个点
                for(int k = j+1;k<j+4&&k<n;k++) {
                    //最后一段剩余数字不能超过3
                    if(n-k>=4) {
                        continue;
                    }
                    //从点的位置分段截取
                    String a = s.substring(0,i);
                    String b = s.substring(i,j);
                    String c = s.substring(j,k);
                    String d = s.substring(k);
                    //IP每个数字不大于25
                    if(Integer.parseInt(a)>255||Integer.parseInt(b)>255
                    ||Integer.parseInt(c)>255||Integer.parseInt(d)>255) {
                        continue;
                    }
                    //排除前导0情况
                    if((a.length()!=1&&a.charAt(0)=='0')||(b.length()!=1&&b.charAt(0)=='0')
                    ||(c.length()!=1&&c.charAt(0)=='0')||(d.length()!=1&&d.charAt(0)=='0')) {
                        continue;
                    }
                    //组装地址
                    String tmp = a+"."+b+"."+c+"."+d;
                    ret.add(tmp);
                }
            }
        } 
        return ret;
    }
}